﻿namespace ScrumFactory.Composition
{
    using System;

    public enum ScrumFactoryEvent {
        OpenNewWindow,
        CloseWindow,        
        ViewProjectDetails,
        BacklogItemsLoaded,
        BacklogItemMoved,  
        ProjectRolesLoaded,
        ProjectRoleChanged,
        ShowAlertMessage,
        SprintsLoaded,
        SprintsDateChanged,        
        OpenCreateProjectWindow,
        ProjectCreated
    }

    public interface IEventAggregator
    {

        void Subscribe(string eventName, Action action);
        void Subscribe<TData>(string eventName, Action<TData> action);
        void Publish<TData>(string eventName, TData data);
        void Publish(string eventName);

        void Subscribe(ScrumFactoryEvent eventName, Action action);
        void Subscribe<TData>(ScrumFactoryEvent eventName, Action<TData> action);
        void Publish<TData>(ScrumFactoryEvent eventName, TData data);
        void Publish(ScrumFactoryEvent eventName);

        
    }

   


}
